package base.jfinal;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import base.ctrl.BaseController;
import base.jfinal.anatation.PowerBind;
import base.util.Common;

import com.jfinal.aop.Interceptor;
import com.jfinal.core.ActionInvocation;
import com.jfinal.log.Logger;
import com.jfinal.plugin.ehcache.CacheKit;

/**
 * 管理用户后台权限验证拦截器
 */
public class PermissionInterceptor implements Interceptor {	
	private static final Set<String> excludedActionKeys = new HashSet<String>();
	 
	  public static void addExcludedActionKey(String actionKey) {
	   excludedActionKeys.add(actionKey);
	  }
	  
	/** 获取当前系统操作人 */
	@Override
	public void intercept(ActionInvocation ai) {
			if (!excludedActionKeys.contains(ai.getActionKey())) {
				if (ai.getController().getRequest().getSession(false) != null && ai.getController().getRequest().getSession().getAttribute("SessionModel") != null) {
					Common.setSessionManger(ai.getController().getRequest());
				}else if(ai.getController().getRequest().getSession(false)!=null && ai.getController().getRequest().getSession(false).getAttribute("SessionModel")==null){
					ai.getController().renderJson("{\"err\":9}");
		    		ai.getController().getRequest().getSession().invalidate();
		    		return;
				}else if(ai.getController().getSession(false)==null || ai.getController().getSession().getAttribute("SessionModel")==null){
		    	 //session中不存在值或不存在"SessionModel" 对象,则表示已超时
       	   		    ai.getController().renderJson("{\"err\":9}");
		    		ai.getController().getRequest().getSession().invalidate();
		    		return;
		       }
				
//				//防止手动输入没权限页面
//				SessionVO ses=(SessionVO)ai.getController().getSession().getAttribute("SessionVO");
//				String  privilegeList=ses.getPrivilegeList();
//				JSONArray json=JSONArray.fromObject(privilegeList);
//				// 如果没有权限,则返回
//				if(!json.contains(ai.getMethodName()) && ai.getMethodName()!="getPrivilegeList" ){
//					 ai.getController().renderJson("{\"err\":10}");
//					 return;
//				}
		    }
		    ai.invoke();
	}
}